package com.wgy.day29多线程.线程状态之等待唤醒状态;
/*
等待与唤醒机制:线程间的通信
概念:多个线程在处理同一个资源,但是处理的动作(线程的任务)却不相同
举例说明:有效的利用资源(生产一个包子,吃一个包子,再生产一个包子,再吃一个包子)
通信:对包子的状态进行判断
    没有包子-->吃货线程唤醒包子铺线程-->吃货线程等待-->包子铺线程做包子-->做好包子-->修改包子的状态为 有
    有包子-->包子铺线程唤醒吃货线程-->包子铺线程等待-->吃货线程吃包子-->吃完包子-->修改包子的状态为 没有
    没有包子-->吃货线程唤醒包子铺线程-->吃货线程等待-->包子铺线程做包子-->做好包子-->修改包子的状态为 有
    ...
分析:资源类:包子
          设置包子的属性:
               皮
               馅
          设置包子的状态:有true   没有false

    顾客/吃货线程:对包子的状态进行判断
                false 没有包子  吃货线程等待
                true 有包子 吃货线程吃包子-->吃完包子-->修改包子的状态为 没有-->吃货线程唤醒包子铺线程

    老板/包子铺线程:对包子的状态进行判断
                 true 有包子 包子铺线程等待
                 false 没有包子  包子铺生产包子(交替生产2中包子)-->包子铺生产好了包子-->修改包子的状态为有
                                -->唤醒吃货线程吃包子
    测试类:包含main方法
          创建包子对象
          创建包子铺线程开启
          创建吃货线程开启

*/
public class Demo03WaitAndNotify {
    public static void main(String[] args) {
        //创建包子对象
        BaoZi baozi=new BaoZi();
        //创建包子铺线程开启
        new BaoZiPu(baozi).start();
        new ChiHuo(baozi).start();
    }
}
